﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL;
using BLL;
using Obj;
using System.IO;
using imagem;
using System.Drawing;

public partial class AreaRestrita_AutomovelForm : PageBase
{
    private int AutomovelID;
    protected void Page_Load(object sender, EventArgs e)
    {
         ValidarUsuario();
        if (!IsPostBack)
        {
            ddlMarca.DataTextField = "Descricao";
            ddlMarca.DataValueField = "MarcaID";
            BLLMarca regraMarca = new BLLMarca();
            ddlMarca.DataSource = regraMarca.lstMarca();
            ddlMarca.DataBind();

            CarregarModelo(Convert.ToInt32(ddlMarca.SelectedValue));

            ddlGaragem.DataTextField = "Nome";
            ddlGaragem.DataValueField = "GaragemID";
            BLLGaragem regraGaragem = new BLLGaragem();
            ddlGaragem.DataSource = regraGaragem.lstGaragens();
            ddlGaragem.DataBind();
            //Virar a Chave Aqui
            //DirectoryInfo Diretorios = new DirectoryInfo(System.Configuration.ConfigurationManager.AppSettings["PastaTemporaria"].ToString());
            DirectoryInfo Diretorios = new DirectoryInfo(System.Configuration.ConfigurationManager.AppSettings["PastaReal"].ToString());

            //ddlPasta.DataSource = Diretorios.GetDirectories();
            rptPasta.DataSource = Diretorios.GetDirectories();
            rptPasta.DataBind();
            //ListItem item = new ListItem("Thumbnails", "Thumbnails");
            //ddlPasta.DataBind();
            //ListItem item2 = new ListItem("Selecione", "");
            //ddlPasta.Items.Insert(0, item2);
            //ddlPasta.Items.Remove(item);

            if (Session["AutomovelID"] != null)
            {
                AutomovelID = Convert.ToInt32(Session["AutomovelID"]);
                Session["AutomovelID"] = null;
                hdfID.Value = AutomovelID.ToString();

                objAutomovel Automovel = new objAutomovel(AutomovelID);
                BLLAutomovel regra = new BLLAutomovel();

                Automovel = regra.automovel(Automovel);
                CarregarTela(Automovel);
            }
            

        }
    }
    protected void CarregarTela(objAutomovel automovel)
    {
        if (automovel.AutomovelID > 0)
        {
            hdfID.Value = automovel.AutomovelID.ToString();
        }
        lblId.Text = automovel.AutomovelID.ToString();
        txtDescricao.Text = automovel.Descricao;
        txtAnoFabricacao.Text   = automovel.AnoFabricacao.ToString();
        txtAnoModelo.Text       = automovel.AnoModelo.ToString();
        if(automovel.Cambio != String.Empty)
        {
            ddlCambio.SelectedValue = automovel.Cambio;
        }
        if (automovel.Combustivel != String.Empty)
        {
            ddlCombustivel.SelectedValue =  automovel.Combustivel;
        }
        if (automovel.Cor != String.Empty)
        {
            ddlCor.SelectedValue = automovel.Cor;
        }        
        txtKilometragem.Text    = automovel.Quilometragem.ToString();
        txtPortas.Text          = automovel.Portas.ToString();
        txtPreco.Text           = automovel.Preco.ToString();
        txtObervacoes.Text      = automovel.Observacoes;
        ddlMarca.SelectedValue  = automovel.MarcaID.ToString();
        ddlGaragem.SelectedValue= automovel.GaragemID.ToString();
        CarregarModelo(automovel.MarcaID);
        chkBlindado.Checked     = automovel.Blindado;
        chkAtivo.Checked        = automovel.Ativo;
        chkVenda.Checked        = automovel.Venda;
        //ddlPasta.SelectedValue  = automovel.Pasta;
        chkVitrine.Checked      = automovel.Vitrine;
       
    }    
    protected void btnSalvar_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            objAutomovel Automovel = new objAutomovel();
            BLLAutomovel regra = new BLLAutomovel();
            Automovel.Descricao = txtDescricao.Text;
            Automovel.AnoFabricacao = Convert.ToInt16(txtAnoFabricacao.Text);
            Automovel.AnoModelo = Convert.ToInt16(txtAnoModelo.Text);
            Automovel.Blindado = chkBlindado.Checked;
            Automovel.Cambio = ddlCambio.SelectedValue.ToString();
            Automovel.Combustivel = ddlCombustivel.SelectedValue.ToString();
            Automovel.Cor = ddlCor.SelectedValue.ToString();
            Automovel.GaragemID = Convert.ToInt32(ddlGaragem.SelectedValue);
            Automovel.MarcaID = Convert.ToInt32(ddlMarca.SelectedValue);
            Automovel.ModeloID = Convert.ToInt32(ddlModelo.SelectedValue);
            Automovel.Observacoes = txtObervacoes.Text;
            Automovel.Pasta = lbPasta.Text;
            Automovel.Portas = Convert.ToInt16(txtPortas.Text);
            Automovel.Preco = Convert.ToDouble(txtPreco.Text);
            Automovel.Quilometragem = Convert.ToInt32(txtKilometragem.Text);
            Automovel.Ativo = chkAtivo.Checked;
            Automovel.Venda = chkVenda.Checked;
            Automovel.Vitrine = chkVitrine.Checked;           

            if ((hdfID.Value != null) && (hdfID.Value != ""))
            {
                Automovel.AutomovelID = Convert.ToInt32(hdfID.Value);
                regra.Save(Automovel, action.UPDATE);
                ClientScript.RegisterClientScriptBlock(
                typeof(Page),
                "ToggleScript",
                "alert('Automóvel alterado com sucesso!');",
                true);
            }
            else
            {
                try
                {
                    CriarThumbnails(Automovel.Pasta);

                    regra.Save(Automovel, action.INSERT);
                    ClientScript.RegisterClientScriptBlock(
                    typeof(Page),
                    "ToggleScript",
                    "alert('Automóvel incluído com sucesso!')",
                    true);
                }
                catch
                {
                ClientScript.RegisterClientScriptBlock(
                    typeof(Page),
                    "ToggleScript",
                    "alert('Ocorreu um Erro ao converter as Fotos.')",
                    true);
                }
            }
        }
    }
    protected void CriarThumbnails(string pasta)
    {
        DirectoryInfo DiretorioOrigem = new DirectoryInfo(System.Configuration.ConfigurationManager.AppSettings["PastaReal"] + "\\" + pasta);
        FileInfo[] Arquivos = DiretorioOrigem.GetFiles();



        //DirectoryInfo DiretorioDestinoThumb = new DirectoryInfo(DiretorioOrigem.FullName + "\\" + pasta);
        DiretorioOrigem.CreateSubdirectory("Thumbnail");
        try
        {
            foreach (FileInfo Arquivo in Arquivos)
            {
                Imagem img = new Imagem();
                Bitmap b = new Bitmap(Arquivo.FullName);
                System.Drawing.Image i = img.resizeImage(b, new Size(1024, 1024));
                System.Drawing.Image iThumb = img.resizeImage(b, new Size(100, 100));
                img.saveJpeg(System.Configuration.ConfigurationManager.AppSettings["PastaReal"] + "\\" + pasta + "\\" +Arquivo.Name, (Bitmap)i, 80);
                img.saveJpeg(System.Configuration.ConfigurationManager.AppSettings["PastaReal"] + "\\" + pasta + "\\Thumbnail\\" + Arquivo.Name, (Bitmap)iThumb, 100);
            }
        }
        catch 
        {
            //DiretorioDestinoRaiz.Delete(true);
        }

    }
    protected void ddlMarca_SelectedIndexChanged(object sender, EventArgs e)
    {
        CarregarModelo(Convert.ToInt32(ddlMarca.SelectedValue));
    }
    protected void CarregarModelo(int MarcaID)
    {
        ddlModelo.DataTextField = "Descricao";
        ddlModelo.DataValueField = "ModeloID";
        BLLModelo regra = new BLLModelo();
        ddlModelo.DataSource = regra.lstModeloByMarca(MarcaID);
        ddlModelo.DataBind();
    }
    protected void cvMarca_ServerValidate(object source, ServerValidateEventArgs args)
    {
        try
        {
            if ((Convert.ToInt32(ddlMarca.SelectedValue) < 1) || (Convert.ToInt32(ddlMarca.SelectedValue) == null))
            {
                args.IsValid = false;
            }
            else
            {
                args.IsValid = true;
            }
        }
        catch
        {
            args.IsValid = false;
        }
        
    }
    protected void cvModelo_ServerValidate(object source, ServerValidateEventArgs args)
    {
        try
        {
            if ((Convert.ToInt32(ddlModelo.SelectedValue) < 1) || (Convert.ToInt32(ddlModelo.SelectedValue) == null))
            {
                args.IsValid = false;
            }
            else
            {
                args.IsValid = true;
            }
        }
        catch
        {
            args.IsValid = false;
        }
    }
    protected void cvGaragem_ServerValidate(object source, ServerValidateEventArgs args)
    {
        try
        {
            if ((Convert.ToInt32(ddlGaragem.SelectedValue) < 1) || (Convert.ToInt32(ddlGaragem.SelectedValue) == null))
            {
                args.IsValid = false;
            }
            else
            {
                args.IsValid = true;
            }
        }
        catch
        {
            args.IsValid = false;
        }
    }
    protected void cvPasta_ServerValidate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = true;
        //try
        //{
        //    if (ddlPasta.Items.Count > 0)
        //    {
        //        args.IsValid = true;
        //    }
        //    else
        //    {
        //        args.IsValid = false;
        //    }
        //}
        //catchf
        //{
        //    args.IsValid = false;
        //}
    }
    protected void btnVer_Click(object sender, ImageClickEventArgs e)
    {
        //string x = ddlPasta.SelectedValue.ToString();
        //ClientScript.RegisterClientScriptBlock(
        //        typeof(Page),
        //        this.GetType().ToString(),
        //        "window.open('PopUpFotos.aspx?pasta=" + x + "','Fotos','toolbar=0,location=0,scrollbars=1,statusbar=0,menubar=0,resizable= 0,width=550,height=500,left[color=blue]> = 100,top = 100');",
        //        //"window.open('PopUpFotos.aspx?pasta='"+ x + " );",
        //        true);
        
    }
    protected void rptPasta_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        try
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                DirectoryInfo pasta = (DirectoryInfo)e.Item.DataItem;
                LinkButton lbPasta = (LinkButton)e.Item.FindControl("lbPasta");
                lbPasta.Text = pasta.Name;
                lbPasta.CommandArgument = pasta.Name;
            }
        }
        catch (Exception ex)
        { }
    }
    protected void rptVeiculos_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        FileInfo foto = (FileInfo)e.Item.DataItem;
        System.Web.UI.WebControls.Image imgAutomovel = (System.Web.UI.WebControls.Image)e.Item.FindControl("imgAutomovel");
        String[] caminho = foto.FullName.Split('\\');
        imgAutomovel.ImageUrl = System.Configuration.ConfigurationManager.AppSettings["PastaVirtual"].ToString() + caminho[caminho.Count() - 3] + "/Thumbnails/" + foto.Name;                        
    }
    protected void rptPasta_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        try
        {
            DirectoryInfo Diretorios = new DirectoryInfo(System.Configuration.ConfigurationManager.AppSettings["PastaReal"].ToString() + "\\" + e.CommandArgument + "\\Thumbnails");
            rptVeiculos.DataSource = Diretorios.GetFiles();
            rptVeiculos.DataBind();
            lbPasta.Text = e.CommandArgument.ToString();
            objAutomovel Automovel = new objAutomovel(AutomovelID);
            BLLAutomovel regra = new BLLAutomovel();

            Automovel.Pasta = e.CommandArgument.ToString();

            Automovel = regra.automovel(Automovel);
            LimpaTela();
            if (Automovel.AutomovelID > 0)
            {
                ltAuto.Text = "Autos - Alteração";
                CarregarTela(Automovel);
            }
            else
            {
                ltAuto.Text = "Autos - Inclusão";
            }
        }
        catch (Exception ex)
        {
            lbPasta.Text = e.CommandArgument.ToString();
            FileInfo[] lista = new FileInfo[0];
            rptVeiculos.DataSource = lista;
            rptVeiculos.DataBind();
        }

    }

    public void LimpaTela()
    {
        lblId.Text = String.Empty;
        txtDescricao.Text = String.Empty;
        txtAnoFabricacao.Text = String.Empty;
        txtAnoModelo.Text = String.Empty;
        
        ddlCambio.SelectedIndex = 1;
        
        ddlCombustivel.SelectedIndex = 1;
        
        ddlCor.SelectedIndex = 1;

        txtKilometragem.Text = String.Empty;
        txtPortas.Text = String.Empty;
        txtPreco.Text = String.Empty;
        txtObervacoes.Text = String.Empty;
        ddlMarca.SelectedIndex = 1;
        ddlGaragem.SelectedIndex = 1;
        CarregarModelo(Convert.ToInt32(ddlMarca.SelectedValue));
        chkBlindado.Checked = false;
        chkAtivo.Checked = false;
        chkVenda.Checked = false;
        //ddlPasta.SelectedValue  = automovel.Pasta;
        chkVitrine.Checked = false;
    }    
}